package com.han.algo_ds.algorithm._01_07_compare_sort._02select_sort;

import org.junit.Test;

import com.han.algo_ds.algorithm._01_07_compare_sort._01bubble_sort.BubbleSort;
import com.han.algo_ds.algorithm._01_07_compare_sort.tools.Asserts;
import com.han.algo_ds.algorithm._01_07_compare_sort.tools.Integers;
import com.han.algo_ds.algorithm._01_07_compare_sort.tools.Times;

/**
* @author hanpeng
* @version 创建时间：2020年7月30日 下午6:40:50
* @ClassName 类名称
* @Description 类描述 选择排序 
*/
public class SelectSort {
	public static void main(String[] args) {
		Integer[] array1=Integers.random(10, 1, 10000);
		Times.test("sort1", ()->{
			new SelectSort().sort1(array1);
		});
		for (int i = 0; i < array1.length; i++) {
			System.out.print(array1[i]+"_");
		}
		Asserts.test(Integers.isAscOrder(array1));
		System.out.println();
		System.out.println(Integers.isAscOrder(array1));;
	}
	@Test
	public void sort1(Integer[] array) {
		for (int j = 0; j < array.length-1; j++) {  //array.length-1 轮 每轮找到最大值 从最后元素
			int maxIndex=0;// 从0开始比较 
			for (int i = 1; i < array.length-j; i++) {
				if(array[maxIndex]<=array[i]) {//等于保证是稳定的排序算法
					maxIndex=i;
				}
			}
			int temp=array[maxIndex];
			array[maxIndex]=array[array.length-1-j];
			array[array.length-1-j]=temp;
		}
	}
}
